{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 利用数组进行数据处理\n",
    "> NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环)。\n",
    "> 用数组表达式代替循环的做法，通常被称为矢量化。\n",
    "> 一般来说，矢量化数组运算要比等价的纯Python方式快上一两个数量级(甚至更多)，尤其是各种数值计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-5.  , -5.  , -5.  , ..., -5.  , -5.  , -5.  ],\n",
       "       [-4.99, -4.99, -4.99, ..., -4.99, -4.99, -4.99],\n",
       "       [-4.98, -4.98, -4.98, ..., -4.98, -4.98, -4.98],\n",
       "       ...,\n",
       "       [ 4.97,  4.97,  4.97, ...,  4.97,  4.97,  4.97],\n",
       "       [ 4.98,  4.98,  4.98, ...,  4.98,  4.98,  4.98],\n",
       "       [ 4.99,  4.99,  4.99, ...,  4.99,  4.99,  4.99]])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 假设我们想要在一组值(网格型)上计算函数sqrt(x^2+y^2)。\n",
    "# np.meshgrid函数接受两个一维数组，并产生两个二维矩阵(对应于两 个数组中所有的(x,y)对)\n",
    "points = np.arange(-5, 5, 0.01) # 1000个间隔相等的点\n",
    "\n",
    "xs, ys = np.meshgrid(points, points)\n",
    "ys"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "z = np.sqrt(xs ** 2 + ys ** 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[7.07106781, 7.06400028, 7.05693985, ..., 7.04988652, 7.05693985,\n",
       "        7.06400028],\n",
       "       [7.06400028, 7.05692568, 7.04985815, ..., 7.04279774, 7.04985815,\n",
       "        7.05692568],\n",
       "       [7.05693985, 7.04985815, 7.04278354, ..., 7.03571603, 7.04278354,\n",
       "        7.04985815],\n",
       "       ...,\n",
       "       [7.04988652, 7.04279774, 7.03571603, ..., 7.0286414 , 7.03571603,\n",
       "        7.04279774],\n",
       "       [7.05693985, 7.04985815, 7.04278354, ..., 7.03571603, 7.04278354,\n",
       "        7.04985815],\n",
       "       [7.06400028, 7.05692568, 7.04985815, ..., 7.04279774, 7.04985815,\n",
       "        7.05692568]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x7f91bc9f0c10>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAASoAAAD8CAYAAADAKumpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABOHklEQVR4nO2dfcxvV1Xnv+s+5UWq0wJ1yJ22mdZIIECCYIMQjGGozlSG2PkDFXQUHSadP3wBNVFwMmFmMn9oYsQaJ4w3VAccxqoVh4ZhQIaXGBPttBcIKAWtiPY2QLkOFF8He++eP35nl3XXXa/n7N/znNvnrOSXs8/aa7+cfc7+/NZeZz+/h1pr2GSTTTZZs5w46g5ssskmm0SygWqTTTZZvWyg2mSTTVYvG6g22WST1csGqk022WT1soFqk002Wb3sBVREdBMRfYKI7iOi1+6jjU022eT4CI3eR0VEBwD+CMC3ADgD4G4Ar2itfWxoQ5tsssmxkX14VM8DcF9r7ZOttS8BuB3AzXtoZ5NNNrlEhYieRkQfZp8vEtFrLPvL9tCHqwHcz87PAPgGaUREtwC4BQAuv/zyr3/6058OAJAenubxRTaZOrJ1j9ZHeZn8rM2IMochRLS3Mp7dyDzLfoltVDZTNz8/ffr02dbaV6uNJ+Smm25qZ8+eTdmePn363a21m6z81tonAHzd1McDAA8A+C3Lfh+gSklr7RSAUwBwww03tLvuuguttQs+58+ff+Q4lVHzvY9VNvvp5b06tDyp6+eyPm6X0XnHSNeF9yFxn9K2QA06J05c6NBrk9DTZY6ervfBsucfTaeV6/XN+VTLc1utrDw/ODj4s/TNUeTs2bO4++67U7YnTpy4qlD1jQD+pLVm9m8foHoAwLXs/JpJ50oFUhlAaWWtclr7HuQse89WA56W9nSZI097QNIANMLj0uqwvvmt/p04cQKtNRDRI/X19JwjT/c+dn3vQ4cmt5O2mk6C9Pz58xfVVfnw/kiQSzl//vwFQOJt9/yojqqMeEYUeTmAX/UM9gGquwE8lYiuxw5QLwfwXV6BLKSygDp37pxab/bD243qsfK7PguoEZCyJr4GMevc0s0RDgZLpy1V5HVY4JLHLKxk2gNWBC0tT9ZVFV4H944s4cDaN6wKz8ZVRHQPOz/VdquoC4SIHgvg2wC8zqtsOKhaaw8T0Q8CeDeAAwC/1Fr7w0S5RZCKlolzIFUBk8yzloz8PErLo9QBF8PJglIVVpk8TeTElnkSWtq55qVwkeCyIMTritIZYElAeXmah1MRWb7DyINWt98XrPgzmJCzrbUbEnbfCuCDrbXPekZ7iVG11t4J4J3FMrMgxfMqkJJ1AihDTrMdASgPUhkwzQVUFUqaaHVYnlU/l9DgemkjwaVBq+pR8bYjr8iDk2bD68ks/Xh7Fuw88HiwGiGj6mHyCgTLPuAIg+lSNEhlAWVBam4sKwulCHSyjHeupfk4cNFsrDwvrZ1H+opkl37ZtPSSPGjN8ajkuQUaOU4acOQ4ZL0a6Tl5sLK8KwtWI2TEc9GFiC7Hbr/lv4lsVwGqCjA0+GThNhdSEbiWAMqDlPWG0DtGOpn2dJk8KdbSL+NVZSGVhdZcj0qeS1jIvOy4VMHBoWWVjfRHGKPK1PXXAJ6csV0FqICLvRELSBZoqoBaAilZ3qpD6r3znp4Dpzmw0s4tXUW08lositsugVQELcvLygBKShQklwDTPpqHlgXJUcOKP6uHLasBFbBfSM2NZVlgqWxdkDrtvLK/KnOMdNZ5pM+K51lZ5xlI8bqteBQHhgas3qcIUBI8vU0v7pQdGytQHoGrCqt+DaNiS8ceVHMgVYHTUkhZ5a26NL3UARcDKgupKpgiQO0hSHqB8GUTkPOqLDhJIHW9BSt5fXyTZwQoLhJcI9/qcfHiTz0/C6uuy0I0kg1URdhUAbUPSGXgFAHKgk8GTlVY8Xa9+zBSNFBI6d5Ot9cgJQGkwcrT8f5Ij4jbZbwqr67sxwuUd4kC5gBwcHBwkV57UzlK9v2FZskqQJUFUGQT5fW2lgbceboCLaAGqAqkNEBZD5V8cLUHeenDLT0mqedpa59Ut4kgxWHi6bxlYRZOMm+ud5UJlEtb7U+Ozp07F8Jqi1ENlAx4lkCqAiYPUhUwcb0FqAqYIjhpYOIPlpXWzrN5XKy4FM+TAJLltHiKt8HTA1Nvz0tzUHCdvP4oDrV0KcihWVny8XGUfdbqXyrHHlRzl3NrgJQHrTmAqkAq2mOVTXu6rGhlNc9KW9Zp6X609kplYOWlucg3ehk4SZvMUtADmSyviReHinQj5NiDygOMBwwLRNm/91sScPdsvK0LUsfPozQQw6kCK+3c0lXEAhTXRcDSwBVBq9evQYnb8HOu80Chgcm69ihQbkGLw8qLT2XAtA+oHGtQRSABdI9rDqQynlvUpwhcWh1anVxn2cs65ZhxO1nGypNpT+fppURLPwmtCqQ0IFnQssCVPfc8o6xUYk8SSLzsnDd8XUZDRXsOD0tWASrgwknaYVKF1Pnz503QZAP1WtnsJxN0j3QyPXd/VaTLnldEK6t5UfK8Cil51JaHnkdlnUudBxtpZ32ySzAZMM/AShtvuT9rzX9CU5FVgiqCxr4gNRdQgP8HzRk9T1tw0uy9Y6SzziN9RqLYlDyfCykJGy3OUwGW9JpGeFeyfHZDZwQrK7jO9aPBsoHKgFQWIBooMsu8feyt8urT8vi18vHgtlo6c7R0mXMuGZffWnZE0FoKqV635WVlgcX7vsQ70kRCxwNWBVbynknbDVQDhU/aKAiuwUcrk3kTuA9IVeGkAWoUpDRYyfTImEMFZqMgxaGigSsDLKmzvCXPu5IfL1Au/3QmikHxchaYuPRrid4gVoU/g4ctqwAV4Md1vE8FUkvfJEZlo75r/Yyuv59rNpUjkN8AGukjyUx0Lpmd6f2YhZVMWxNXg5aWV/WueKDcij1x2yysZP97P7XzXqayTI1kA5UCiOjcmvxzILVkiZkF0xxAZSGVBRPPtx5w6/54Ir0TLU+Cp6ctePV8CaSut7woK60By/OqvAleXQpy78mCleZdZWDlgY8Df4Qc+7d+c5ZhFbhYoKkE0fexdUHW5533tKXzwGQBSnuI5zzYWplsbIrb9rS19UADEAeMleb2FrA8MGkQk3VU3+5lA+QarLS4mnU+8u3fSOhVZBWg8ryPCqQi3dwgfRVQmi2vQ8uXOn7upSWcPDB5gBoFLGDcZs9+bkErs/zrbXoxKTmRLSh519v7GMWpunTYZALk2lhG90/aj/CE+HN32LIKUAExBCRw9gUpbbmZ6Z9Xn3eNUu+d9zRQ+/XPSGedZ/OA/Wz2zEArs/yzPCou1nIwK95yLgOtKGYV2Wiw5elRcaoNVAFAquCoQsoCXaatSl+t+jw73nc+XpWjpcucZ++flOrSz4JUBC3Ly8p6VLJO6y2a9rF2lEupbEnQzrUxjuBklVsiG6hmTvwIcCMhVQ24R9el5Usd4P+4XuVo6bRzS5eRuUs/LWbFj9ZSTwNWb8sDlHa91diVfLvnwarbZ/MiMMm2LDhtMaqBUoFUZvtApowHLmD877BX9L19OT5a2tLJfKmTae08m7d06Zf1riwdYP+KZ+9T5FXxvAg4kcyBlWwz8qp6fj/Ova9ZkV/ChymrBZWEhGazBGwV72oEpCrQsgLvWtrT8WM2zdtfKtrmTnlegZQGq16fBZkIUJFo3lVlSwJw8a9w9jwrDmV5SdZ5v17ry0ILvs+VUfVUZRWgygCgAosIGEshVQm4Z66v22QANQdSFpQyQJrzYGoeDhe5Q7wCKQ1WmnfF25fAkoCSeVHsSlvuWfAi0n+Fs9cTwSobNJcw8r6IlsjIuojoSgBvAvAsAA3Av2qt/Z5muwpQAT5UonzPfi58KnDz+peBlxfT4roo7R0taMgHz3sQrTxt4lt5PAbERdsrZR17G9nAOQcW76MFLusao+WcBawqrHrftCVdz9fSmXjVUhlZF4BbAbyrtfYyInosgCdYhqsCVT+OhEAGOJXtCkv7lwFU9pzrpQ6w91h5aU8X3TspUWyK62V8KYKVBS7rXAuSR9ckPaZM3MoClgcrC0Takk7ay/HNxKuWyKi6iOgKAN8E4Pumer8E4EuW/apAJSejpq9AKDr3QJTxsIB8wF1eS3brAtdF6d4fOa7aUaa1c0vnSSZOYi33ushrkPulNFhlgNU/WvzKWvbxPvHygB57kvbyLV31nzFoZbwvnChetUTkl2sgVxHRPez8VGvtFDu/HsDnAPwyET0bwGkAr267/558kawWVNWg9tw3dHMhVW1LA5R23ZreOwd0OGkP81xYRXnepODA6OcapCxwSU+I52lpbwnI9dpysCIdINFvTGlbCjRYefchG3/Sxlire4kU6jrbWrvByb8MwHMB/FBr7S4iuhXAawH8O8v4yMWbzNXJn4VLFVKZIP2Sfmp6qePnQH1/laXTzpe++dNiJRVIyaO2PMzGqLhOW3JasasIYrx8ZTuCBIlm4+VnoOW9OVwiA+s6A+BMa+2u6fwO7EClyipABVwY/Obncyf/nLjTUkhlAu6Za5M22vjI+riNlSfLATGQqg9mB4FXr/xZl360ICXho3lEHrAsr0oCUMautLd72nKOw8oCXAQmaaPBLYo/yS8FKxi/REbV1Vr7DBHdT0RPa619AsCNAD5m2a8OVDyd+VTtq2DzIJVZAmYAZ+VzfcZ7iiCVefMXPYhafmbpx8+1GFQEKQ4Xno6AxftlgYv3q/oLCFpZb9uBp5NjJ+9LFH/K2C8R/owNkh8C8FbavfH7JIDvtwxXBap9x6WqAXALUpXysmz00driY2SBKQsn78G27DL3TooWm+rn2vKriwctWd4DlszPTNYKrAD/N6bmwCoCVe9j5h5a9ktlcF0fBuDFsR6R1YDK20u0FALR0s16G7gUUlkYWTayfVlOy5NjyfXy6KU9nScSUF2nTRwJIdl3DVpe2lvG8evRlnNeHVG8qsMmAys5nl6cy7o3lXhVFb6RLI1dzpXVgAoYGzxfai/LZN8Ezg24y7b4uaxPy/Pe/GkPsAeoUQ+j9ic0VprrtDhX5RcSZHxGgigjGnQ8YFmwkmOrnY+KP2ljy+sfIdUvrlESgoqIrgXwFgBPAdCw2w9xKxE9CcCvAbgOwKcAfEdr7fO0exJuBfASAH8D4Ptaax/02rC8DE3n6TMQsAAzF1I8b+Rbwcx4APX/+8fT3sO79IH0JocMpvfJZB2ll8NhJoHFddpycM41yD1OFrA0WGnlrT+BWRJ/knDS6l8q/Lk6bMl4VA8D+LHW2geJ6KsAnCai92C3o/S9rbWfIqLXYvdq8ScAfCuAp06fbwDwxunoShY2S+NYGc8o0x+tXq1cdglolbd02dgVP2rgkA+e9iBWHk5r6cfTc4Lp0suSwOptSmhZS7nMx9uNbi2nNFh5Y8zrWRJ/ivJHBtSPQkJQtdY+DeDTU/ovieheAFcDuBnAiyazNwP4AHaguhnAW9ruin6fiK4kopNTPV477uSsQGSuvda2Fb/y2qnANFrmWYCywBTBSXugM7Cy8uQE0ADlTRwJLg1avQ4tlpX5hQS5HMxK91iqsOLXaAX5NXtZZwZU3hLQKr9EVgsqLkR0HYDnALgLwFMYfD6D3dIQ2EHsflbszKS7AFREdAuAWwDg5MmT4STVvISlkIq8rQqkqp5epo88rwKoUcH0zEOp2VhelQSWhJEHLc27AvK/kMDrn7sUnPMmT1vSeUHzSryqX2+0BJSe2hJZPaiI6CsB/CaA17TWvii+vRoRla6g7f7u5xQAPPOZz2zRZK2CoJerQKNqU4WUFXD3+uq9DZV1WPEq7yjTo9/qWAF1y7vqx2pcyopHSXhlloKZN3yRzoK0li/TXrwqApGnWyral+BhSQpURPQY7CD11tba2yb1Z/uSjohOAnhw0j8A4FpW/JpJ54o3CT3PQ9PPiWPJerKxrGygPXMt8ro0W+1c87a4HdfxtPXQRQ+2BIwlVkA9G0yXcale1gKWBSGvb1acyQNWBlbZILqVtuJVlq30wqx6lsrIuiqSeetHAG4DcG9r7WdZ1p0AXgngp6bj25n+B4noduyC6A+1hfGprtPy5oKgAhwJnaiMp59zDVqZzNs+OXZRMF0+hFlgSdFiUzwvE0zv5SW4JIi4XTUeFdll3vB54yHPK/Enbh8FzeWYacdHfTAdwAsBfA+AjxLRhyfdT2IHqF8nolcB+DMA3zHlvRO7rQn3Ybc9wdwWL2UpeLx6RkBtJKSkXc/LxK2seJX2kEbxKi/t6TTJxqa4bTYu1ev1gCUl+7Yvglr0hq9LBKpK/InbZ5eAHthGAWa1oGqt/S4AC8c3KvYNwA9UO1IFj6bfVxxLxpbmQGouNLkuAygJM2mvHWVaO8/eQy4epDp0OIg0aGlLQQksb2Nn1rvq7Vq/MZWBVQZcHnx4Wovl8XxrXKPA+lJZLagOSyxvIAMXIP5zkwo85sSW9gEpmW9du2VXOfIxHC3VDZ7dTgbIJbBkvy0YVZaC/Temsss9WbccT2tzpwcnqx7PU9LAZrU3V+QzdpiyKlB5k1eziQA2FwwjIHXu3LlUG1lIzQFUBKcoZuXpNNGWYF5MipeRSz0OJQ9YUSBdLvF4vgYjrT1vLDpEtCWdtLcgpsFJjk/kKXH78+fP4+DgQK13qYysqyKrBVXXaXnShoPCq2sOpLTySyF1/nzuP+XwfM1W87S0NB8nbdz5Ueqr97CLFVCPgunZuJRsNxtz4vl98ktoeW1ZQXRtSSfHRI6PBxQNQBkdBz23OQ7B9L2L9U2fgVcVPBVbC0Tex4KU9tYwCyntGiKQaeOpjbWX1s4zIpcaVhC9H6O4lAYibisnYQVWXeR5BEbtvC8dK79vruVbUIq2IPBylu1SOdagAuxJFsHFs5G6OUu+ar5W/0hIZQG1JJiuPYyZ2IS2uVOe8wlViUvxtOY5yTxvKWj9DV8WVl7Q3IKPNg6yLu++yHHwjjJQPzJGtYHK8BQ8QFXAo9l6ZTX7OeDyIDUHYJZN13vLQe/Ix3OuWOUlTKKjBATXW21WvacOrCyssks6WYcFHVm/tgTUPCsZWPeC6FbcbIlsoAo8BHnM2GahlIFUpkwWUlqcy2tvTkDdGit+zATTqw+mtQzjkv21hGogvfrWrwMoAytvXCy4aW87ZVkJGZ4vy2qB9ciWtzFCjv1bP8DfyOhBwLOV9Xp2c6B2VJDyAOVBSj5o1uSREgFLTpyu4xOoiwYuL4ieDaR7b/0074lLBCtvuSfP5XVo+XJ8pKekldVgFNmO9qpG1VOV1YBKA4TU8yMvVwWPVy4bPO92FdB4kKoCDIj/FpDXrY1zRle9f120N088bcWlOHh6vSMC6Zb3JG08GFlLOnkuIWHlS6hzT8mDUWRreVVLhT9Xhy2rAdVcb8qCmmabqbdLFlaebQZEljeWrde6Lj6mmi0/WjpZR0asX0vg6TlxKQ1Yczd4WnmynLeks6AmrzezBMx4SJmYlHX0xqIqxxpU2QG3vsWWgIfnaXZWWQ8m58+fPzRIaX2dE6/q/YnukSU8fqJJNi7F6/AC6dFSbw6sNAhJmGvw4XaWvVwKep6SFliPbDNe1Qg51qDqYk1OOVEjm16XV6fMyy75tPKVZVsGUlmAadegjSU/52MTBdMrDyW3jQLq0a8ldIkC6VkgAfrf8GnlMjCyll5yHDwoWXlZD7R6HBUEHwkqIvoUgL8EcA7Aw835F/CrAVX0DSIHyLPzYKHpsku+nh9BTfYjCyKrvhEBdQtO3gTTxj0S+QbLi0kB9V/xtNqMloJyIyavWwuaSxgBF8M4O3YZT0lCRdusqZXx3gBKAC4V+awNkn/SWjsbGa0GVIANncxktmDh1efBawk0vHL7glQFUNEEkGntXIq2tOnn0kvoRw1aWkyq2/MJXPWsKrCS8NDGION1SVBYefKojd2I4wipfnGNktWAKgMcbusdM2/MIlurvGwvA5VoKViFnqzT66tmx+3l+PL03G9PK3jsxaW0mBPvkxZw14Tna790oMFKQk6OQRSv0rwu7fqtwLoGriVelRd4XyqFeq4ionvY+am2+/nxC6oD8Nu0+xnzX1TyH5FVgco7ehOuevSA5NlY4JD9s4CixbK0+jJ/1OzlW+PlQWpJIJ2LFQ/xgukyrQXJtTaipWCvQ+ZJWMkgOr/eiucUxaJ6W9ZSTfN+PPBYR6sPI6RQ19nmxJwm+cbW2gNE9A8BvIeIPt5a+x3NcDWgAnyoyPO5k9iyjcpkvbSsfl+Q8q6JnwN2vEqmPV0Xa+nX01ZcqpfRlnzakkwu9Xp91u9E9XRmp7nlIXmekwayCFgaXDRbz6uaA7URMhh6D0zHB4notwA8D8C6QWVNamCsN8WPWnvexLb66MWlKrDxIJUFmDWGFqCisckKt7WWe/1ci0txCHGxloO8LQ9ImjfU663EpSy9BjILSrxPkW0EIA1q0VaFpSKfsyVCRJcDONF2/yv0cgD/FMB/tOxXAaoICtYxC4AIIlH9c4LdkV7W6f08zIiAeiWYLh/q7EOemXwWtCzPidtVfmOq23rLwGpcir8RlGPleUaZ8bCOGQBpS8lLwKN6CoDfmvp1GYD/3lp7l2W8ClABPqSkTRVolTq1Nrz2Nf2coLplPwdSHqCy47P0m1PGpICL3/hxIHmeE5+03Mbynnr/Jay8WBe/n5HeWwJKqHAbaWvFqjTgWHoLalYdS2VgPZ8E8Oys/apApR2l5+HZ8rq8j+chyXo1Wy/Pgo6nt7YseMDLQE/aeGkLTHMeTLm8A2pxqW7P41Gybu49dWhJWEnIaD9ql41LWcu4CCpzvCgPQNrSL6qDj/VSGQWqqqwGVEAuXjIaaPIogcD1PG3lzYlXZUHUbZcE1LVxk+PhpT3Rln79mIlLSWBVf2NKwkraVONPGnh4WxqMOFR4OQ1glldVhZkEkWWzVEbVM0dWAyrthmaC6HLwMkDL2EUQ0/LmxqsiPYfZkqWgHFfvevlYVcX6oTxAjxlJYGl23HPi+RGs5MSqxKW0erRlnwaZbjsXPLIf2nhqsPJiWiPk2IMKuHjiSx3P4zYefKzJGn28CW/laW1XIeW93asCTJ5H8SoNTNUHM1r2cSh5wOIfGXvi0Ipgxevn/cvEpThgtbGSniGHRbRZM/KA5JHXGcHKOo6QUW/9qrIaUGmQ8vIqIMsArXLU2ongNVevLffkcnFJQF0+eNq1Zh9OzfPQln0SSNZbuS7WUtBa4vE+ZOJPXK+Ngfa2L1q68bQFFV53FjJZIGl5I2RUPVVZDagAfXJYkJC6fl6BTjSxrTytHc3e86aiuq165kLKA5Q2MaP7w6VPDq0cX6pJKGnA0rwrLVDeRYOVfOOnPTuWPgOlzBLOW4J5AOLX7tXp1Wu1vVR4Hw9bVgMqCRCps/KsiagduV0FaLIOWY/1ZlDaRfDS6s1Cysvj9VreVcazsoTbWHEm4MKtB9ayT/Ou+HIvCyvep0hfgRKvI/KqtGcoC7UIcJ6N1dYIOdag8ibFXIBpQKvASILEApLlmewLXjLP65PXT6/vvd4lIrcjeBCSOgtIvEzld6QifQVKGS8pAhDvbwVE8lq9erS8EXKsQQXkl3gZnQRYxdYDmleHB4qe1paNVh1Wv5ZAyoNWr8+6L9Y5gIsmQRSXknCSIPG8py5RED2KS1WgxOuwbDNxKStO5ZX14OdBSkJylBx7UAGx9+N963tw8YLoGsw0Wy9m5rXvAUQCKKvnY+TlacD0dNH4ZcTzpHq+BqzI4xrxO1IeaLS3fbJc1qvSIBZBy6vXA1JGpz3fc0R+yR2mrAZU2gTJ6DSAzc2z4joW2LIeTQQvaT93KejZRtDSxkG7P5bI2BMQL/80z0nzpIjG/I6UByWe5lCyAOYtySqwiQAj83hbXjuyT6NkBPDmyGpABeiD4MHKs9O+RbIAkzZLvClZPgO/SK9BqQIp7XqywXRpp8FAs/WWdXNhJYPovK/e8s26RxWAyXosj4iP51xYae33cfDqkHYjZAPVJHIS8bT8xpxj50GK52fgk4WMVm8FXp7eg5TcPJoJqMv+RWLZRXEpXlZb+lmw0r4kvLiU9nzweJYGlOpST4NfNa7U74UFuxG6EXLsQRUBJwJNVme1EcVpeJ1ePVa9Vr8yoIviVfL8/PmL/1ZwTkBdu05L+ETIxqW4rXVuBc1lv7SYErfXgs2aV+TFqipQ84AUwW5fuqUin/3DlPR/JSSiAyL6EBG9Yzq/nojuIqL7iOjXiOixk/5x0/l9U/512TaysKqU0fI8uHig8eAj28oCSbsGqy2tDhk4r0Cqp8+dO/dIOQnHc+fOXZBvfbqdBGvvU6+D66SNdR4tdT29rMu7/9ZzpN0D6x5qz5Ks1ytn1RHNh8yzP0Ki54A/fyOl8u9TXw3gXnb+0wDe0Fr7WgCfB/CqSf8qAJ+f9G+Y7EKJ4KLZRTd5qS4LN0D/9YYskLTJnQWdBh4tT8LCKtvhpAEv+vR2elu8Tq0P2rkGGDm+1nhrdtYYanVkAeQ9Q5aN9oWnla+GNKK+jYZG5VkYKSlQEdE1AP45gDdN5wTgxQDumEzeDOBfTOmbp3NM+TdScoG8z5s0wk57IOWNyQAtW2cGXlFMqh/lRNEAYXljvIz1sUAj2+h6CxhWHVE5bWykbeb+WOWte+nd3yrkqrpMvqebI6sGFYCfA/DjAPqMfjKAL7TWHp7OzwC4ekpfDeB+AJjyH5rsLxAiuoWI7iGiex566KGLGhx1syxd5iHSAFZdCmYmkvfNLu01T8ICmAYz69xa9kl33nog5RJQ1jd3qcfztHJVKGkTyYNNP0Z1evdfyii7OflLJAupIwEVEb0UwIOttdMjG26tnWqt3dBau+GKK67Y602JyvDzuQ+i9rBnJoDWTw9o3Naa3NFSsB87UHi+Fq/SYCP1VlxK2lpLPz5mGqystAZQbewsW2+pGN1r7d5593OUzmo3sh0hRwWqzFu/FwL4NiJ6CYDHA/gHAG4FcCURXdZ2XtM1AB6Y7B8AcC2AM0R0GYArAPxFpVOVwV96w73lptVOP49Ao+nkRIriJNYEtGDEJ723jLO8LHlt1RhH5c9l+Hm34Xlampfv7fS+zt1WwK/Ze6un6c6fv3jnuabrYyz/rEVrw7Pj6W5n5XMZBY99ATCS0KNqrb2utXZNa+06AC8H8L7W2ncDeD+Al01mrwTw9il953SOKf99Lbi6yjdFlK9NsAhWWr4GsIxOQkBrKwM5efRiH1q7cyDF7bzlnuZF8X5Kz6nrpZ12nk1b16ZBXY53Zmzn3NeKLpPvlcnk7wMq/N57n9FSeesn5ScA/CgR3YddDOq2SX8bgCdP+h8F8NpKpXMAJNNe/pyHZoSuuhS0Jp4sl1kiRZDSICTzLThxnbX805Z6Ud81KGn95pIZ38xSz8pbqvP6Wqmzks/HYanIZ9L7jJbShs/W2gcAfGBKfxK7/2wqbf4OwLdXO7IUQDxdydfqPUyAeRNQm3By0lnpCFLWrvXshOXiLa0qGzqlHb9+ueyTu9H5crD3de5Sj8sonZa28rPl59oukdEQIqIDAPcAeKC19lLLbolHNVyiQch8e2TLVerKwnLut6z2LWRBIvLCOPAtkHmQ6ufS65HA0841W95v7VzmVZZ91lhG4659KUbLv0zZSCf1Wn72WcvI3HJRnZlPQV6NC/dnqrIqUHHJDHLlpmq21sOk6bz4FNdXddbE0PrP9ZXln+WR8TxvWSc/HqC0paK3NNTGKIKSnOze+FljKsdCG29Ll8n3ymTKV4C2DyBZMhJUcn+mJ6v5W78uc29ABJBKG9EydM7DV9VxGGRAJvMteFnLQuthkw+eNp7Wkk8Ta3mX+Vu9vtTT8mX7/dj7rC3/eF5F57VRyY/qt2zleGbf/C0VDv6EXEVE97DzU621U8Lm57Dbn/lVUWWrAxVQg1IFbCNtK+UjndR7ZWW7GpCysSvefgZYsi8ZEGgSxajkq3etDSvf6s8Inbwf2rWOtJ0Lr30CK5qbTM621m6wMvn+TCJ6UVTZapd+XfjARJ5Spo65EJzTRgVwmWULt/W8Ka0dLXYVeVQcav1oxaqsJaHWhrwGKy3bt8bSist541jVafdBG2dPKl+U1XJRHQVPKOxL9sstkL4/81MAbgfwYiL6b5bxqkA1EhLV+qz8ysOpPQyVQKsHs8zE0uAkvSKZlkCyYlKZ2JMFpgystOvQYlFWfEpemzWOmXyvjNYvqTuML8bDqk+rfwSomr4/819a9qsClSUjQDSivsw37dJJ4uVndJG3ZcHL+3hA8jynzMMs27CuLwK+lBFfPFH+3Gek4t2MfvaXyihQVWV1MarRF1n5VrRkX9+Wlcmk9SWj04DWz+d8tH7KeEj/aD9wJ8tpsSYeq+L19mOkiwLMmk6KprfKWXVokqmjUt/o/kX17wNCje3PtGR1oOJyWN8mmW/BpVCy9BFILS+j8iqe52eBZC3X5DV4b/osOElgaIDh4zBXxydoVGaN4DnMN3qVPh2FrBpUVTkKsM2tLwNHLb9Sby9reUL8ONel9yaNBVl+tLwduRVhn1sD5HjtCw77hNphyT48qoysJkY1GiZL2hwNogqUKv2reGOatzXnYwXTvTiV1mfNE4zGpRLE1mSf9zjTzj5ln1/Msp05X2hLZfUe1VofhtF9yTxo2fiU1Q8PcB7AtAA8gIs8l0zd0abMikeT8T4qHorVntWnfcoava99QSgjqwdVVebGmI6qLyP6FdVnwcPzcjLflhY8AD0WxctUJtlcUFi2RznZ19yXjGygOkQ5LDe5Kpn2K32c621lgNVFe7tXgdTcibrGQLPX/lH3a5RsoFqZZJZ5Ry3RslDaRPmZJSEPznM49PNul90GwPu/RvBwOerl4Bpke+t3CcqaoJWRjCeZ8bakRxXFj9YSY8nKpdDHo5AtRrXJo0K2Sf3olw1Ul6B0b+JSFN53K23Zcr12zKbXKpdCH49KNlBdIrJWOPX/4CIlglBkq+08nwMrqz3ef01/1NCw+sL7e5xkA9URiectrBFIVn+X1MGBpOl6O/0H6mT7HWLyI214+1q6ImsC21G3f1jSX6YchTyqQeUtb9bYl7lwtOrTvKyq16SNlexzBKest2XdFwtKkVi2RwGWTF8uBdk8qqJYE99aAl1KffGWG9n6NHhJIFl7nrgXJSeS9jas4lFFS8gKlEZP8swyb59guRRifMceVJXg7mG3r9nMrZvDZkn8qEuvr6LTYMXrleW0zZ4WePrPs3gfqy1+rRld758n+5z8R+0lHQXYjj2oRksGfEvAo7VjtR/1L4JXJlBe0WlLPc+LylzrHDhxL0rT8fotnVZfNq3J6NjXpeAlVWQDVSAWHEZ7X3M9HtnXLLysNqz4kuynp+sejtRFSzzLo9GC7vJY/fDy0jua41lZ16F5XiOgtE8vbU0vDIBtw+cFMho8GRBE7WTgFU2quaDLeEi9f5ougpbWV225p8GNl9NgZS0Dub0Fp8jb8q4hiimNhtLccqPhcxge2/bWLymjvam59VU8Lwto1sT3YGB5SNIugpbWF0+0fmn9m+NNcaj1/kZAs3Te9VjXWIFZxXbE28rDgE9FjsqjWtWutRE3ZfRNrjyko+IqkZcg25Mg42kJBZ6f8X5OnDjxSB5Pa3lVSGW8KS9/lK6Sr/VH9jV6vo4iDjZKNE9b+4yWVYFKk8zDkPEGItt9fQNrOi2ektVpE0qz9fI9WMlPFlia3gOhVp7307pez9taCivvHmjteXVF+SOe3wqIRuykz0JqH6Ba5dKPaHk8J6pD3vAlsSarrayt1PUJLHX9GC3/eD5folppT3jd1tJP9i/jTUXp6lIwsvXKV2Dm6SyZa3vYMMvIKAgR0eMB/A6Ax2HHoTtaa6+37FcHqgx4osm+JH4k016+p+PlZVuenddGFCDPBsv5ZLVg1dvUgugW1DXgaJCyICSBkoVTBBptDGQbnl1Glx3zqHy13GG/GRzoLf0/AC9urf0VET0GwO8S0f9qrf2+Zrw6UGlS8VisfC1tAU1ujuS6qLyn45Pes5OTWvZF6nsd/LotgMlysn7pvlvAluMsjxqwAODg4CAFLH6dsi6tXNdn+qON11LdyHw5BpHtvqCkyai3fm33MP3VdPqY6WNO5lXFqA7jG2hU/j51ml5OUq6XE1vqvbR23nUyUK7FsDQbqw4NUloZC0je+Fj6KKal6bSxzOi0NjLllz6fGdsRMBsdoyKiAyL6MIAHAbyntXaXZbsaUI0OUC61HanzwOR923uTSOorEz+ClRco14LiFtA0KMlzDbxeWoNXZUyX3q9IZ7UxMn+p7RIpgOoqIrqHfW5R6jrXWvs6ANcAeB4RPctqd3VLP6J5cSmZztQlb2jXWeUjnVbWajez1ONt9HSfrNwFzzykWv29H9F5Lxst/WTaC2xrkMrEruS4a/VmQCbLj4BUpIvGa98wGyGFGNXZ1toNyTq/QETvB3ATgD/QbFIeFRFdSUR3ENHHieheInoBET2JiN5DRH88HZ842RIR/TwR3UdEHyGi5ybqd3Xy4ffy5UNq5Ue6aHlgTQZN1yel1Zam1ya4bFvWO3epJ88PDg5c70lb+skx6cs8XrbXOxdSXmwqO65ZoHn3a1+6kflctHjXXBm19COiryaiK6f0VwD4FgAft+yzV3ArgHe11p4O4NkA7gXwWgDvba09FcB7p3MA+FYAT50+twB4Y7INVeZ8o1RucgS+io4//FabfJJkoaTZVgDVgcLr1M61yc+hpT3wPO/g4OACGGn19jLWeTV2Jcdes/fG2rpP1n2x7kOkqzyn2WdyzpfxEuneduaTkJMA3k9EHwFwN3YxqndYxuHSj4iuAPBNAL5v6uyXAHyJiG4G8KLJ7M0APgDgJwDcDOAtU1T/92nnjZ1srX06aOeCtLc1QNpZZTTbbJ1Wf/q5pouWf3zZ1fXRUs8qD9j7orR0n2T9YQN2b+D4Uq+3AUDtU2vtkX8R5d2/3i4fK67PQEqW1dIakLQ+aXC3jhHQNJ3Xtta+VX8WNlGZfcqo7QmttY8AeE7WPuNRXQ/gcwB+mYg+RERvIqLLATyFweczAJ4ypa8GcD8rf2bSXSBEdAtNgbaHHnqI6y84Wuk5N7Cqq36DctslSz1Z3pqYvC6tvFWXtqTj/Sa60JOS7WifPg582SeXanLpt2Qp6AHM86a0Pms6795Y99Wzlzbes+HlR+DMlpkrI9/6VSQDqssAPBfAG1trzwHw1/jyMq93vsHZA6FJa+1Ua+2G1toNV1xxxa4zC+JPSyClAWkO6DS9BxoLJF55D2gekLylH4eGtfzjyzptuSfhJAFlwcE658vWTDkPXt3Wuj+Z++h9aXmQ856JSGf1b8kzv1TWDKozAM6wPQ53YAeuzxLRSQCYjg9O+Q8AuJaVv2bSubLkm8LSaQ9n9RvRy9MmCD/O8ao8gMl6uTeiXbMHKw4nrutHz6PjH20cOMRk+xloyeuzAGi1rY1ZZFu9t/weeve1ArBRdjytxRWXyGpB1Vr7DID7iehpk+pGAB8DcCeAV066VwJ4+5S+E8D30k6eD+ChKD7VpfINMdLOy4u+SfvRmtiazvOqpL0HDK7PLPU0OBGRCizuLUk4WR/Ns+rjpS03raUgH3dtvKzlXwZe8qjZZu43Lx89U9qzVXkG5+i0dpdKFlL7AFV2H9UPAXgrET0WwCcBfD92kPt1InoVgD8D8B2T7TsBvATAfQD+ZrINhaj2N3dz7PoDwu28OqL6pV6zO3Hi4gC6LN+P3VbmSbsu0p6f83atc+DCP4nowfWu19rUXj5Yok16rpdwsM4j8Ff1/PqzoNHglQHaUiBlIWTZeeCcI6v+4bzW2ocBaJu3blRsG4AfmNshPtk8YHh2HEgSFJa9BRTroev2WShZ5acxu+jh4jper4RTt5fj13UWnHifu463zaEl8637JvsjbSWANJ3nScn8bsPbj+wjeEm9V167Ru15GRGCmKvT+rhE9uEtZWRVO9MjmHjg8vJ4/Za9vNkVAPEjr6OntfKaLXAxaLQ6eN7BwQHOnTun1tEnmbYFQe4+lxDj1+RtS9DuIRct4Nz1FiTkOddl4OXV4dln4COvSR619jQbq94MwKIvBc9uqRx7UFmT2AOTZSdhI20sWGkw0GBXXerxsnzySyhJ746XA3SIAT6stLJ8DCSwNE+q+pBbE7nnWRO0Cqk+VlJngUOzl/2K6tbqta7LApk1Nl28ctImW9cI2Vf8KSOrARXge1SaTlt+aUDS4GHBSvaFP7Ry+SNhUIGSrEOWt2y0pR9w4ebNLhk48euW/eCeVPSAehOp90W7djlWFUjxshwssh7eplbWgpcsJ/ucOWrXOBdkS+1HyLEHFZ8wVbBk8mQ78iZ7XpJXh2YfAYwftRiWHANZhwUra+w4nLoNANeb0pafVfGWfVKfXdLxfPn3hF45T5+Bl3cPoxhUBlKRR2a1Zdl7Xu0SOdagkjdEgwJPS1BYedoN9LwvwAZEv/lVr8qy1eqVZa24FK9LE60+LZAu/4SGj5FcAvayVntcrMmRiVftA1IcPLJ9KwivXUd2KegBTB4jgGn3PlPeuw9LZNVv/Q5DJJC4jgNMHqPlX+atnhVUr3pV/KhBTYOSZs/P5ZELr8vL633VvD0g3pbQ86KAujYhMvGqDBAiSHEYyXSv27OPYMfrkH21rk/TV4EWgSyrGwGrLUY1CZ9Uo5Z/GlAiGHlQ87wqrpO2mgfIj1Kv1e/B6sSJi/9paO+3hA8ft8y2hMpDHr2R6jba/dA8qz6OWn4EnQg8vH0Pavy6ItuoP1WgcV20xJT1joRUl2MPKg06Xt4oAEU3WuotryqCEj+3lnSZuFTkWWmiBdr5mAC5bQnWQ+rBlvdRjoUHgQxslkAq8/aP9zGClzcOlWMFaFY9XrxrqRx7UAEXfttr0LFAFAEoWrplodbLaR6UFhS3llq8DjlJgC9Dw1sOem/4+PVxd53XL20ynlTlYfc8KwsM2oTVbCJISQ9M2kRxLK99eR0VcGaBOQdk8vmy8pbKsQeVhEy0BKsAKIJMdNM5eHh7Vt3aN5y3L0qOA6/HglXPs5Z61vhqXpSELfek5jyY3uTp19B13iTUlohcl4GUNbk9vdVeBl7WGCw9Rm8F+zEK4C8R69k6DFkNqAAdVlrenLd6S70q2U7lbZ+nj4LoEaw0sQLp/JqlF2Ut/Xgb2aWfpbMmm3YvoxjPXEhVtzRo9WjwknlWXfIarbGIynog2gekumweVQCiylu9XsYqK/O9o6xDy+PHTPwpmthaXXK5Z8FKXm8ErH6U0JJ90s4jmfN63oPAHEhFHlikl/3gY6GV8a4zA0GtfPRWsAK0pXLsQQXoUPGWfxaAIs9LLv+8+iQQtDxetwZNT6+1wevV8qy3ehxEXeReKW5nXfuSZR8fCzku8ihBzvUWBDhU5PKrCilZR6T36vHyrGcwGh9tTOfWuYFqkGQApN2AKAAeeWCyPn70bHs6G3+y9F0HXPxLBx0wlaWeHM/+YFnAssY7u+yT16ede5Mw89q/23kAyEAqG1SX7Xt6eV2ZPKv+CjDnAG2paF+EhyWrABUf0OwbOMtb4vVxvQYhbu8tC603et5k9PRZWHW9FkeSov2jBn5tEli9Pu36NUhlH3ZtTGS6X5ecVDwtx2AppCowWupNWXVzWz4mFfhExyzQ5sqxBlUXa4DnBsAjD83aZqD1wQuej4hLWe3wuvo1yKUeB5EWSOfjFsWl5Fho/YzEsrfe9nFdBChZ3vKWZPlomVjV835EcbUIKNZnzjYH2c6c++fJsX/r54HFgop3Q7xvFfkGULPNBs97OopLSS/K+mmWjPfkLQU5oDxgyeOIn3eRfeR9io4aoHheBigVSFkB+SowrD5q+bJf3phUxq5yXCqjPCoiuhbAW7D771UNwKnW2q2W/WpABcTeUtbO86p6+X703hby9gDbQ5L5XjkuGqy6PRGpedxGC5DzcarEpeTSb25Afe5E49fd9dqE53YRpCIvKwMjrS+yPq+/WhtenZatd4xeRMjnda4MjlE9DODHWmsfJKKvAnCaiN7TWvuYZrwaUHk3I3qrp5Xraan3PCUtz1ouaqCyrgXQ41KADaue5y31ui7akR7Fpaz4VCU2pV2/NR4WmHueNtm5nQcz6w+WeXlvGZcFmwc3DxJevjZumXqteqx6l8goULXdP3z59JT+SyK6F7v//7l+UHlLP8D+W7jIq+K22iT0tiBoQLI8J1mXtJsDK61/Wj5wcfyAQ4uPS7f1xlFeV/Wtn9RpcOp6DUpyglcD6hVISbj1vs1Z8ml6rS4+JhEApS0/VgPzS6UAqquI6B52fqq1dkozJKLrsPuvyXdp+cCKQAXESzo++J43JSeI54F1nbcFQUt77XlBdA9W3TvSJNqCIOEsr1umvZiUBqjsA+/ZZfb5RIDiNhVIWUHy6u9aZfI9GMn+S3s5jpn6Mx8eM1wihWD62daa9g9hLhAi+koAvwngNa21L1p2qwCVdTO1o+X9aDCKPDCpk33g+TIdvemzgujcRhMZX/OWevLbjQPKghovx4/V/zoTiRZM52nvnvfy3mTkbXiTcw5srEB8BVIVe34NUayMH4/CmxoYowIRPQY7SL21tfY2z3YVoAIunqDeEYhvTsXj6sco/iTT1pLMAqV2vdFYRPkSaL19DqTMLnwrmN5l1NIvmkyjA+pWfubH9+bkW/be9Wjncoyistk+LJWBb/0IwG0A7m2t/WxkvxpQRTeKH+UyzQOZt60hsud6K60Bh9tlgWR5XRYA+vVagXR+bsWlomB6P5fX5IkFbZ7W4MSvy0uP2LowF1JWmyPstXHI2npH677MlYEe1QsBfA+AjxLRhyfdT7bW3qkZrwZUQM2rqgDIgo8FoYyNB6NsEJ3n9T1U0VJPut9aIJ3b8nTl1xKqgJLijS3vtzbBtHQv4wHBs4lAFO2rAmzAVYHJry0DNW+cKmVGyMC3fr8LIN2x1YBKPtjRNwUfMM9G1hu90QPi/VIy7dWh1Vnxnqx8CS4PWBq4og2ePJ19OL0JocWsIkjxst6k1mwq+RlPanRcKmMvr5PbZsdRwnapjIxRVWRVoJJvrqLYFIeBF5MC7Mku09Jjy4LK+yeg8rx7TxbINJHLNwlqC1gerPg1axs85wbU5Rsm74tBm1y8nmjSSrtRkOJLzLlxqbmQ0q41k2fZzrmHmnhvpfctqwEVEHtV2iSTttktCFp7UufZe2/zMrDq/cku9bwtCDImxT0mLS7Vx0SOqRwz67/OZJaFMi8Dqz4+XadNTG4/19OK9klpkJK2lWVdBiYZO6vP3lhqdSyRY+1RSdBoXlW340dpy/M0e0tvLQez9XTRgtZdX/We5vwtnwQW4P8rLAv8VkDdum5Pn7kf2lLGSkt7a1Iv3ZrAbbIeUtRuZK9dE9dVPC/50mGUHGtQAfY3rgcTbxJY8PGC8DKfn/ebHwXJPVhx13npFgQg96N4VlzKCqZ751mJgM7HybqnFUBJ+zmQksCoLBcjD20U1DKAkuNu5c2VDVSU+xMYb0uB9nBraW9J59lbD4MUC1Y9L7vUk/lyrPpDI9vr+dq4atCy+mo93NqLjEiywfR+lJDnem2ydjtvInMbDThZm6XQydQrxyHjRVp1V+6TJ/KL8jBlVaDyIBMBK7ME1GJb0tYqa3lA1tYDD1aa7YhA+r5+LcHbJ6b107LN3Nc5gOq2S0HC7aKlYQU6WjvyOuZCzRsfa6yWyLEHFXDxw+ot07ITIFoCcshp9fE8D0qWvkMheluS3YIwJy7F8/m4yPGxYlPRv3KXkgE/T2vwz066TIznMCGV8ZSqb/ms67LqtuobIcf+rZ8FlmgLAtfNXQJqD4XWN96GFEsv8yV8ord+sh/Shtenpb1f8bQg5cWmsoF1meeNbx8ffo3czgOUzPdA5sEg2szpvW3LfrL9WQI1SzdKVu1REdGPAPjX2P0S30cBfD+AkwBuB/BkAKcBfE9r7UtE9Djsfrnv6wH8BYDvbK19KtHGBcfqFoSeziwBedryZLhkguhd73lP0RLPsuMA6hIt86K4lHXNcty7zhobLlqeZZ8JpvejBA/Xa5O0240ChwWpyk51qx7vOipvG+W1WGO0RFYdoyKiqwH8MIBntNb+loh+HcDLAbwEwBtaa7cT0X8B8CoAb5yOn2+tfS0RvRzATwP4zqCNCyZV1wH5LQhW2sr3lnQaiCJ4yTwLWBlY8fHQ+sEfGG2/FLezjtYGzwpsKlINpst2s8vBKOhcgZSVD+iQ8paBsk+ZJWJ0HTw/8jBH3ENg5R7VZPcVRPT3AJ6A3S/zvRjAd035bwbw77ED1c1TGgDuAPALREQtuELtBvFjpIuWgLJcdJ4BU2a5J5d3fWe6tfVAfmtZgXRejtfTbbmNduRjJmNR3q2ytmNokhlfD069/gyguK03oTOQioLXVU8qam+EfSZ/hKwWVK21B4joZwD8OYC/BfDb2C31vtBae3gyO4Pdz4hiOt4/lX2YiB7Cbnl4ltdLRLcAuAUATp48ecGgap6VBp/KElDayHP5JzBZMEWwktLh1QHheVccRhrcuA1Pe7vSNUjx9q2AOh8nT7Rrse6BB6eu9yDF7TOTVtpWP/36M3DjgB2xdcG6Lm28rDIjZLXBdCJ6InZe0vUAvgDgNwDctLThtvtZ0lMA8MxnPrNNbYEf52xB4OloSadNEKt+qw5ZrnojI++K91XCjYNGi0txiHlLQ2DcZk9ev3VujSvPk5NN6nqZaBKPgtQcD4y3mS1vXcucfmn9WSKrjlEB+GYAf9pa+xwAENHbsPstmSuJ6LLJq7oGwAOT/QMArgVwhoguA3AFdkF1V7QHOQJRlB/laXbetoUuHqys5Z52vdbbPsuun1v2ElwcVBJAnrepBdR5nnYtllh5Ekw8bUGKl9UmtTyXsNDyIwjw8llQZMpFYIvsvOuxxmGErBlUfw7g+UT0BOyWfjcCuAfA+wG8DLs3f68E8PbJ/s7p/Pem/PdV4lPecg7IxZ/kQ215SZbHtRRW8sHQ4KUNSWaflAYsoPYrnl4wXY6RlDkPvRZI5+noyOupAIqXmfOJymc8Kc3OWtrNiWNp127Zj5DVgqq1dhcR3QHgg9j9L64PYbdk+58Abiei/zTpbpuK3AbgV4joPgD/F7s3hCmx4BMtAbmtTMtgtLxp2mSowEp6TdktCNq1a95VBliZuJQXTO9pHn9a+kB645yBVZdsvEqWX7KcisAx921hpq1s2TlbF0bIakEFAK211wN4vVB/EsDzFNu/A/Dt1Y548NF0XrxJmySet2NtRcjAitfDl3LWv7/ioPE8LO8PjmU9Pc3LAfavJQD2jnQvNmU9pB6ULWB596sSr9IAJfO1yVuF1FyAzN2nNaf/lp57oktl1aA6DJEwiJaA8jxjY8HGg5eElRVzkuL981BLNLvqLyTI5V0Uk7KA1UUG9COx4BzZaHCSRw9c2TdfVUBl4aSVteJXSyE1d+vCUsk++/uQVYGKpy3w8LQVr/K8rTnbDqQ3VgFWtBS0IMb1vR4g9wsJ2jKPw6jXI8eGp0e/9ZMSBdPl0Zp0GqDkeQZava4qoKyylaB4VP+cPvLxGQUqYPOoHplYlfhTv5nW27Iu0TYFaa/Zae3IILm3Ux2A6l3JGy8BJXXZX0gA9F/x7Edrc2cmoF4RGRvxwKTp5KSW9XoTX55beb2+KqCqkJLl9vEnOBHolsqxBpX2rZGJP1n20k47l7ooYC4D7JpYb/f6x4NqxqviEKoGz6Ngej+v/j8/TaKxjsCkHbtob/542gKUpRv9VjALqcyyMOp/1DeZHiHHGlSAvo7WBtlKe3DTzjP/jIFLhxCQ+40pS7wtCL2fElpcJ9McXkve+MkxWrr008pWYdUlCq5XgCXv9yhIZbcx9HLVONOIf9W1VKIYa0WI6JcAvBTAg621Z0X2qwVVdb+U1GWWexasomVcn/TZwKKEDy8vwZL1qCSAvOB5BKksoKIXARl99l56wfVs2sofuXWhslVBtm3Z8XOvTAVSI0AFDPWo/iuAX8Dul1ZCWS2o+s3KxquA+E9gtJulwYrX5Qlvz1vyWTeXL99kP7MeVeaNH3Dxb1EBea/KGz9NvC8Qr57qmz+ui4Al65/z6XVk7S1IVQLiS+NSo0E16q1fa+13iOi6rP2qQQXU3uBJuGW8KsCHVSZQXlkKSqjJOnq+tOXnWVhxCM35h6NLH26vPA+ya/2oQMpKy2fFgtpoaHhv67KxKa89z2OKrmGpFDyqq4joHnZ+qu3+vneWrAJU2mDKgZUPqWbXJ7y1bOQ2UixY8XIWtLJBcs27kqCJgKXp5RGw3/h1nffWb9RDzcdHXrNMR7CqQoq3nZnIUV5libcUUlKf3eoQ2S2VYozqbGvthsWNTrIKUAG2RwX4O8QtcElocfFglYk9aW/3JGi8myoBJsdAA5YGKytYXgmi83Qfgy5z4xHapPC+YDQIZY8RoHheBkra5Jf21aXbyOWbZsuvd5+gAra3fi6oOKC0B9Ja3nnLsugN39y1eHULgszr5xJY0rYKK8D/r8i8jX0u/bx7XD1KHVD7w+VIv/St4JzfYc9ud5jTzxGygSoAFeBDwDqfCyQtUJ6Fl/XnM7KPElwesICLfyGBpyuQ4jo+Xh6gogfUmwje/ZkLK1lnBVCaTta5BFJzl4mZNqsgGw2qUcF0IvpVAC/CLpZ1BsDrW2u3WfaXBKg0L0mW5ZINovc8C0ISjNGGTi9IzvuqLfkiYLXWHnHzo13pWUjxfsnzrrPG2BPNdjSsgIuXZVY6C6xepzXJI3B45edAKuNNVe2XSDFGFdX1ior9JQEqeZ4BUQVWPb8SKM+K5l3xa8oASi71ov/bV4GU5kUd5dKPpzU4ARd7T/2YAZQ8l8+VN9EjCGQ3fVaBZEGxugl0hBzrpZ/2QHqg0nRRPnAhdCIPiy/3srDiMPG8KwkkXlbWw881cFnQAnKQygIq84Ba4+PdSw9QXCzvSdNVgNXr1ib2CEjtYxnotee1M0KONaiA2APyoKPZR7pswLyDq0/4aIOnJRxQGrAklHhaC4JrSz1vZzpQ/w2quUs/yz4CFJfM5s9+nAOs3sYcKFnQGPV2z1sG8vaydVtjPEeOPai0AeVpDWQAUrCSSzoOq2qgfIl31cX7g2LLc7LSGWjJceJj68WmRjzcsg6rTm0DaOVYBZTMt8p5wNpHwD3rSWWD6rzMCNlARf5/mdHOs7DS9F6gvPKnM7xvkXfFbWT/pY2VrsCKw2jJPxzNPpzZySCXId6X1FJIcVsNUPI8A65e1xwweWU9/Zw2ZZmlUvlCHy2rAJW8IZU/gdEA58GKD7blHWXe7nUYaEFy2T8NXlwvgaXBSANRFlIW/Lx/OOotuzOixUS8L565sMrosoDSdNrEj+ws6PTyWUBZkMp4U7zM5lENFP6gyMCzZtdFxpwiWPW8aqDcEs0LtDwrDVoWsPq1R3EpC079aIGrixVQj/7RaFai+7cEVp4O8LcvRHCS+l5fBKgIcllAZSFVBeVS2UAlHjrP24kC5BlY9fw+Ub2/84v63WFgtcWhYun4efZXPDnILDhVAuhavIrbZsYim6fBiKcjWFkAA2IPSuZFwMp6UVlIZd8EZspVPLQRsoFKgYsFGm3QPVhl1tbeP2OIPrIPHC4VQPFz3ieg/n/7IkhJQMlxlX2uilZmLqyiYxftLZ6VjuCkgSILN2lT2e9UfbsXQWp0jGoDlfHQZrcdcL3mjWWBtWQpyAHlLQelTp5rae3FwVJIeYAa9Q0cAWsurLpYyzuui4Cl5c/ZuiDrq4BGAiXjgUl91NcRcqxBJQdSexgrsOJeiFZXh0Dm7/y8PkfeVe+DVc4752luk/kVzyyksoA6iqUfT3tw6kcLUlbaOu/1WxN9NKQ02MyFVOS5jZBj/dYPmOdFRQFzwP99Je/tXp/w3lLQug5uoy0HpZ0819KabskGTwkpOUb7WPpJvQUvrawGJ3mck/YAJe08AGQhld0nVYVUJlY1Qo61RwXM96IiWHHgzJE53pXMk9CzgDUHVhxaAFRw9XZ6Pk/zPEu3RLR6LEBx4dsbPDj1YxVcGqBkfgVavJ45H16+ArpeLtP2Ujn2Map+A6JfRbD0mfgTB04VWl6Q3IKTFpPKAMtKyyMA9eiBS45dFlCVhzN7z6RkwGTlVSHF27QgpOk84C2FVCbgXoHUtj1hT6INpgYv71c4I2DxYLu15MsuBbX+a+Dieu0aOLC4rZauHAEdXF3fRQOYdm2jRG4EtcBpwSpz9HS9DxZwMmDSAGXZeNDh5SuAmgMpOe5zZQMV6V5V9IZPEw9YIzd4WnDq1+NBi5e3/hxnLqyA/A/ljfiHo5HIsfbO9wUrIA8oea7l8frmfDLlvaB+drk3ElLAFkwHoHtVwDxY9fw+0b2/88v2LfKuNHB5On7N2hJtDqyAsb9BVQWXN6ZVQPH0HEh1WQIozWbfWxcyAfdsoJ2XWSrHPkYFXLwHysrP6jU7bymXWf5pdQK4oI4uvE5NJ/P7efaXFZZAKgKU7PNc0coeBqwA/89neLoCrF5vBKEqpLKeEeDHsiJ4jZBjDSo+oEtgRbQsUF7pLweYtRzU7Pm5zON6beuBB6d+rEIqgtYIiYCVBZSms+DUj9m0d97rzsIoC6jKZ+4yUfZ7qRxrUAEXPhBLYJXZ0GmVtW6mBJMWj+o2lickzyvpyq94ZiClxar4OZe1Lf20euRSTB5HAEraeOUPE1LVrQxLZQMVG8gMrDQQSeBU3u5J0ETLPmnTRXsraQHLSmuwsqAloZiBFB9red512n2pilbWgxU/j8Ck2VYh5aXl0jELJQ92VShFZat5I+TYg0pCKYJVt5He08i3elIsOMm8Xg+g/yhexovi9tbRglYvCxzt3/nJvng6D0xADU79mAGXBsbsDnVLPwdQlfJzloGjgunH+q0fH0wLVtEgcWgBy/41+ZwtCFZMygOWldbAlYEWkNvgWYlNHdbST4oEE0/PhZUHsd6mByFNZwFvNKQqWxEs3QgZ6VER0U0AbgVwAOBNrbWfsmxXASrg4hhVFw6NDLB6mT6B5/xsi7YUlH3NeFUesDQYaQCKIAXkdqZ3sa6Hyz6Xfppou9J5ei6sMjrv7eAcXdYby0Cquk8q2vw5QkaBiogOAPxnAN8C4AyAu4noztbaxzT71YEK8GGl5XsyYikI4CLg8X5LryoLrP4ARUu9CFJRXk8D9s8PS49vtMilhwfLEbDydLw/FlDkuQcdXmcFShHkRkJqbaAC8DwA97XWPgkARHQ7gJsBrBdUp0+f/quDg4NPHHU/CnIVgLNH3YmkXEp9BS6t/l5KfQWAf7yw/Luxu+aMPJ6I7mHnp1prp9j51QDuZ+dnAHyDVdkqQAXgE621G466E1khonsulf5eSn0FLq3+Xkp9HSGttZuOqu1xfwS0ySabbJKXBwBcy86vmXSqbKDaZJNNjkLuBvBUIrqeiB4L4OUA7rSM17L0OxWbrEoupf5eSn0FLq3+Xkp9XZW01h4moh/ELu51AOCXWmt/aNnTUe003WSTTTbJyrb022STTVYvG6g22WST1cuRg4qIbiKiTxDRfUT02hX051oiej8RfYyI/pCIXj3pn0RE7yGiP56OT5z0REQ/P/X/I0T03CPo8wERfYiI3jGdX09Ed019+rUpWAkietx0ft+Uf90R9PVKIrqDiD5ORPcS0QvWOrZE9CPTM/AHRPSrRPT4NY/to1mOFFT05W303wrgGQBeQUTPOMo+AXgYwI+11p4B4PkAfmDq02sBvLe19lQA753OgV3fnzp9bgHwxsPvMl4N4F52/tMA3tBa+1oAnwfwqkn/KgCfn/RvmOwOW24F8K7W2tMBPBu7fq9ubInoagA/DOCG1tqzsAv4vhzrHttHr1T/Bm7kB8ALALybnb8OwOuOsk9KH9+O3d8jfQLAyUl3ErtNqgDwiwBewewfsTuk/l2D3eR+MYB3ACDsdktfJscYuzcsL5jSl012dIh9vQLAn8o21zi2+PLO6SdNY/UOAP9srWP7aP8c9dJP20Z/9RH15SKZ3PfnALgLwFNaa5+esj4D4ClT+qiv4ecA/DiA/sd6Twbwhdbaw0p/HunrlP/QZH9Ycj2AzwH45Wmp+iYiuhwrHNvW2gMAfgbAnwP4NHZjdRrrHdtHtRw1qFYrRPSVAH4TwGtaa1/keW33tXnk+zqI6KUAHmytnT7qviTlMgDPBfDG1tpzAPw1vrzMA7CqsX0idn8kez2AfwTgcgBH9ickx12OGlSlbfSHJUT0GOwg9dbW2tsm9WeJ6OSUfxLAg5P+KK/hhQC+jYg+BeB27JZ/twK4koj6Zl7en0f6OuVfAeAvDqmvwM4DOdNau2s6vwM7cK1xbL8ZwJ+21j7XWvt7AG/DbrzXOraPajlqUJW20R+G0O73MG4DcG9r7WdZ1p0AXjmlX4ld7Krrv3d6Q/V8AA+xZcxepbX2utbaNa2167Abu/e11r4bwPsBvMzoa7+Gl032h+a9tNY+A+B+InrapLoRu5/1WN3YYrfkez4RPWF6JnpfVzm2j3o56iAZgJcA+CMAfwLg366gP9+I3dLjIwA+PH1egl284b0A/hjA/wbwpMmesHtz+ScAPordW6Kj6PeLALxjSn8NgP8D4D4AvwHgcZP+8dP5fVP+1xxBP78OwD3T+P4PAE9c69gC+A8APg7gDwD8CoDHrXlsH82f7U9oNtlkk9XLUS/9Ntlkk01C2UC1ySabrF42UG2yySarlw1Um2yyyeplA9Umm2yyetlAtckmm6xeNlBtsskmq5f/D5At4miwF1SHAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(z, cmap=plt.cm.gray); plt.colorbar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x7f91bd9c6490>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"Image plot of $\\sqrt{x^2 + y^2}$ for a grid of values\")\n",
    "plt.imshow(z, cmap=plt.cm.gray); plt.colorbar()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 将条件逻辑表述为数组运算\n",
    "> numpy.where函数是三元表达式x if condition else y的矢量化版本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1.1, 2.2, 1.3, 1.4, 2.5]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])\n",
    "yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])\n",
    "cond = np.array([True, False, True, True, False])\n",
    "result = [(x if c else y) for x, y, c in zip(xarr, yarr, cond)]\n",
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1.1, 2.2, 1.3, 1.4, 2.5])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = np.where(cond, xarr, yarr)\n",
    "result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> np.where的第二个和第三个参数不必是数组，它们都可以是标量值。在数据分析工作中，where通常用于根据另一个数组而产生一个新的数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.28101678,  0.78503159, -0.53449794, -1.40015557],\n",
       "       [ 0.33606168,  2.08500769, -1.29547646,  0.61630655],\n",
       "       [ 1.0047253 ,  0.56482815, -0.12642146, -0.49774806],\n",
       "       [ 0.11662455,  0.6838037 ,  0.54142742,  0.56691989]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 有一个由随机数据组成的矩阵，你希望将所有正值替换为2，将所有负值替换为－2\n",
    "arr = np.random.randn(4, 4)\n",
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-2,  2, -2, -2],\n",
       "       [ 2,  2, -2,  2],\n",
       "       [ 2,  2, -2, -2],\n",
       "       [ 2,  2,  2,  2]])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.where(arr > 0, 2, -2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.28101678,  2.        , -0.53449794, -1.40015557],\n",
       "       [ 2.        ,  2.        , -1.29547646,  2.        ],\n",
       "       [ 2.        ,  2.        , -0.12642146, -0.49774806],\n",
       "       [ 2.        ,  2.        ,  2.        ,  2.        ]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.where(arr > 0, 2, arr) # 只将正值设置为2"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "3207008acf26a07c58f9163727980777c0d92fa298586eda8a314250b7931cb4"
  },
  "kernelspec": {
   "display_name": "Python 3.7.10 ('pybd')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
